package com.sodimac.v2s.commands
{
	import com.adobe.cairngorm.commands.ICommand;
	import com.adobe.cairngorm.control.CairngormEvent;
	import com.sodimac.util.alerts.alert;
	import com.sodimac.util.commons.UtilString;
	import com.sodimac.util.commons.UtilXml;
	import com.sodimac.v2s.business.ProductosDelegate;
	import com.sodimac.v2s.events.cargarProductosEvent;
	import com.sodimac.v2s.model.ComprasModelLocator;
	import com.sodimac.v2s.vo.ProductoVO;
	import com.sodimac.util.alerts.alert;
	
	import mx.collections.ArrayCollection;
	import mx.rpc.IResponder;

	public class obtenerProductosSfpcCommand implements ICommand, IResponder
	{
		private var modelo:ComprasModelLocator = ComprasModelLocator.getInstance();
		private var strHomo:String ="";
		
		public function execute(event:CairngormEvent):void
		{
			var delegate:ProductosDelegate = new ProductosDelegate(this);
			var prodEvt:cargarProductosEvent = cargarProductosEvent(event);
			strHomo = UtilString.toUpperCase(prodEvt.homologado);

			delegate.ConsultaPedidoPaisProducto(modelo.cabecera, prodEvt.idEmpresa, prodEvt.idPais,  
												prodEvt.idPedidoCorp, prodEvt.homologado);

		}
		
        public function result(obj: Object): void
        {            
			var xml:XML = new XML(obj.result);
			var xmlList:XMLList;
			xml = UtilXml.removeNamespacesFromXML(xml);
			xmlList = xml.children();
			
			var result:Number = Number(xmlList.cabecera.@id);
			var glosa:String =  xmlList.cabecera.@glosa;			
			trace("WS ConsultaPedidoPaisProducto response id=" +result);

	  	      switch (result){
	  	      case 0:   //Ok
	  	      			var xmlProd:XMLList = xmlList.payload.productos.producto;
	  	      			if ( strHomo == 'S')
	  	      			{
		  	      			procesaProductosCorp(xmlProd);
		  	      		} else {
		  	      			procesaProductosNac(xmlProd);
		  	      		}	
	  	      			break;
	  	      			
	  	      case 1:   //Error
	  	      			alert.error("Ha ocurrido un error:\n\n"+  glosa);
	  	      			break;
	  	      			
	  	      default:  //reintentar
	  	      	  	     alert.info("Problemas con respuesta del servicio, " + 
									"favor reintente mas tarde.\n\n"+ glosa);
	  	      			break;                  	      						
	  	      }


        }
                
        public function fault(obj: Object): void
        {
        	alert.error("Ha Ocurrido un Error al consultar Productos.");
        }	 
		
		
		private function procesaProductosCorp(prodList:XMLList):void 
		{
			var prodCorpArr:ArrayCollection = new ArrayCollection();
			for each(var producto:XML in prodList)			
			{
                 var tmpProd:ProductoVO = new ProductoVO();
 				 tmpProd.vin = producto.vin;
                 tmpProd.ean = producto.ean;
                 tmpProd.desc = producto.description;
				 tmpProd.unit_price = Number(producto.unitPrice);
				 tmpProd.moneda = producto.moneda;
				 tmpProd.unit_kgs = producto.unitKgs;
				 tmpProd.unit_cbm = producto.unitCbm;
				 tmpProd.case_pack = Number(producto.casePack);
				 tmpProd.sku = producto.sku;
				 tmpProd.quantity = Number(producto.quantity);
				 tmpProd.sub_price = Number(producto.quantity) * Number(producto.unitPrice);
				 tmpProd.sub_kgs   = Number(producto.quantity) * Number(producto.unitKgs);
				 tmpProd.sub_cbm   = Number(producto.quantity) * Number(producto.unitCbm);
				 
				 prodCorpArr.addItem(tmpProd);                          
            }
            modelo.prodCorpData = prodCorpArr;
            trace('--> prodCorpData con datos');
            strHomo ="";		
		}		

		private function procesaProductosNac(prodList:XMLList):void 
		{
			//trace(" ------- cargarProductosCommand.procesaProductosNac ----------- ");
			//trace(prodList);
			//trace(" ------------------- ");
			var prodNacArr:ArrayCollection = new ArrayCollection();
			for each(var producto:XML in prodList)			
			{
                 var tmpProd2:ProductoVO = new ProductoVO();
 				 tmpProd2.vin = producto.vin;
                 tmpProd2.ean = producto.ean;
                 tmpProd2.desc = producto.description;
				 tmpProd2.unit_price = Number(producto.unitPrice);
				 tmpProd2.moneda = producto.moneda;
				 tmpProd2.unit_kgs = producto.unitKgs;
				 tmpProd2.unit_cbm = producto.unitCbm;
				 tmpProd2.case_pack = Number(producto.casePack);
				 tmpProd2.sku = producto.sku;
				 tmpProd2.quantity = Number(producto.quantity);
				 tmpProd2.sub_price = Number(producto.quantity) * Number(producto.unitPrice);
				 tmpProd2.sub_kgs   = Number(producto.quantity) * Number(producto.unitKgs);
				 tmpProd2.sub_cbm   = Number(producto.quantity) * Number(producto.unitCbm);
				 
				 prodNacArr.addItem(tmpProd2);                          
            }
            
            modelo.prodNacData = prodNacArr;
            trace('--> prodNacData con datos');
            strHomo ="";		
		}

	}
}